package com.wu.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wu.pojo.Articles;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author: 吴磊
 * @program: blog
 * @create: 2021-04-19 20:34
 */
@Mapper
public interface ArticlesMapper extends BaseMapper<Articles> {

    /**
     * 获取所有的文章Id和文章标题
     */

    List<Articles> getAllArticleIdAndTitle();

    /**
     * 通过文章ID集合获取文章
     *
     * @param ids
     * @return
     */
    List<Articles> getArticleCollectByIds(List<String> ids);


    /**
     * 获取所有的年月
     *
     * @return
     */
    List<String> getAllDataDate(@Param("userId") String userId);

    /**
     * 获取全部文章数或则根据用户Id获取其对应的文章数
     *
     * @param userId
     * @return
     */
    Integer getArticleCount(@Param("userId") String userId);

    /**
     * 根据文章Id获取文章
     *
     * @param articleId
     * @return
     */
    Articles getArticleById(@Param("articleId") String articleId);

    /**
     * 插入文章
     *
     * @param articleId      文章ID
     * @param userId         用户ID
     * @param articleTitle   文章标题
     * @param articleContent 文章内容
     * @param articleDate    文章发布时间
     * @param articleWay
     * @return
     */
    Integer insertArticle(@Param("articleId") String articleId,
                          @Param("userId") String userId,
                          @Param("articleTitle") String articleTitle,
                          @Param("articleContent") String articleContent,
                          @Param("articleDate") String articleDate,
                          @Param("articleWay") String articleWay);


    /**
     * 插入文章
     *
     * @param articleId      文章ID
     * @param articleTitle   文章标题
     * @param articleContent 文章内容
     * @param articleDate    文章发布时间
     * @return
     */
    Integer updateArticle(@Param("articleId") String articleId,
                          @Param("articleTitle") String articleTitle,
                          @Param("articleContent") String articleContent,
                          @Param("articleDate") String articleDate,
                          @Param("articleWay") String articleWay);

    /**
     * 通过评论Id查询文章Id
     *
     * @param commentsId
     * @return
     */
    String getArticleIdByCommentsId(@Param("commentsId") String commentsId);

    /**
     * 通过文章Id删除文章
     *
     * @param articleId
     * @return
     */
    Integer deleteById(@Param("articleId") String articleId);


    /**
     * 通过用户Id获取当前用户所有的文章ID
     *
     * @param userId
     * @return
     */
    List<String> getOwnerArticleId(@Param("userId") String userId);

    /**
     * 通过用户Id获取用户原创文章
     *
     * @param userId
     * @return
     */
    Integer getOriginalArticleCount(@Param("userId") String userId);

    /**
     * 通过文章Id获取用户Id
     *
     * @param articleId
     * @return
     */
    String getUserIdByArticleId(@Param("articleId") String articleId);


    /**
     * 获取今日推荐
     *
     * @return
     */
    List<Articles> getRecommend();

    /**
     * 获取用户今日推荐
     *
     * @param userId
     * @return
     */
    List<Articles> getRecommendByUserId(@Param("userId") String userId);

    /**
     * 通过条件返回文章
     *
     * @param map
     * @return
     */
    List<Articles> getArticleBySomeThing(Map<String, Object> map);

    /**
     * 通过文章日期获取文章数量
     *
     * @param map
     * @return
     */
    Integer getArticleCountByArticleDate(Map map);


    /**
     * 获取所有的文章Id
     *
     * @return
     */
    List<String> getAllArticleId();
}